package com.jrx.anytxn.param.service.partner;

import com.jrx.anytxn.common.exception.TxnBizException;
import com.jrx.anytxn.common.exception.TxnException;
import com.jrx.anytxn.i18n.response.TxnPage;
import com.jrx.anytxn.param.dto.partner.PartnerShareProfitReq;
import com.jrx.anytxn.param.dto.partner.PartnerShareProfitRes;
import com.jrx.anytxn.param.entity.PrShareProfitTable;

import java.util.List;

public interface IPartnerShareProfitService {

    /**
     * 通过分润参数ID和租户ID查询
     * @param tenantId
     * @param shareProfitId
     * @return
     * @throws TxnException
     */
    PartnerShareProfitRes getByTenIdIdAndShareProfitId(String tenantId, String shareProfitId) throws TxnException;

    /**
     * 添加分润参数
     * @param partnerShareProfitReq
     * @return
     * @throws TxnException
     */
    PartnerShareProfitRes addPrShareProfitTable(PartnerShareProfitReq partnerShareProfitReq) throws TxnException;

    /**
     * 根据租户ID分页查询分润参数
     *
     * @param pageNum  页码
     * @param pageSize 页大小
     * @param tenantId 租户ID
     * @return TxnPage<PmPartnerInfoRes>
     */
    TxnPage<PartnerShareProfitRes> findAllPageByTenantId(Integer pageNum, Integer pageSize, String tenantId) throws TxnException;

    /**
     * 根据租户ID和分润参数修改
     * @param partnerShareProfitReq
     * @return
     * @throws TxnBizException
     */
    PartnerShareProfitRes modifyPartnerShareProfitTable(PartnerShareProfitReq partnerShareProfitReq) throws TxnBizException;

    /**
     * 根据租户ID和分润参数编号删除信息
     * @param tenantId
     * @param shareProfitId
     * @return
     * @throws TxnBizException
     */
    Boolean removeByTenantIdAndShareProfitId(String tenantId, String shareProfitId) throws TxnBizException;

    /**
     * 通过商户ID和租户ID查询
     * 供api接口使用 页面调用不可使用该方法
     *
     * @param tenantId
     * @param shareProfitId
     * @return
     * @throws TxnBizException
     */
    PrShareProfitTable getByShareProfitId(String tenantId, String shareProfitId) throws TxnBizException;

    /**
     * 根据机构号和租户编号查询
     * @param organizationId
     * @param tenantId
     * @return
     */
    List<PartnerShareProfitRes> getPartnerShareProfitByOrgIdAndTenId(String organizationId, String tenantId);
}
